package cn.tedu.sk.entity;


import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;

import java.util.Collection;


@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
//当设置 callSuper 参数为 true 时，生成的 toString() 方法会调用父类的 toString() 方法，将父类的字段也包含在生成的字符串中。
//如果省略 callSuper 参数或将其设置为 false，则生成的 toString() 方法只包括当前类的字段。
public class UserInfo extends User {

    /**
     * 管理员ID
     */
    private Long id;

    /**
     * 管理员头像
     */
    private String avatar;

//    enabled: 表示用户是否启用的布尔值。如果为 true，表示用户已经启用，否则表示禁用。
//    accountNonExpired: 表示用户是否未过期的布尔值。如果为 true，表示用户账号未过期，否则表示已过期。
//    credentialsNonExpired: 表示用户凭证是否未过期的布尔值。如果为 true，表示用户凭证未过期，否则表示已过期。
//    accountNonLocked: 表示用户是否未被锁定的布尔值。如果为 true，表示用户未被锁定，否则表示已被锁定。
//    authorities: 一个实现了 GrantedAuthority 接口的集合，表示用户所拥有的权限。
    public UserInfo(Long id, String username, String password, String avatar, boolean enabled,
                        Collection<? extends GrantedAuthority> authorities) {
        super(username, password, enabled,
                true, true, true, authorities);
        this.id = id;
        this.avatar = avatar;
    }
}
